<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
        正则表达式(Regular Repression)
        使单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式

        搜索模式
        文本搜索和文本替换

        使用正则
        方法一: 
            字面量形式
        写法:  
            /匹配的内容/匹配的模式  ------ 例如: /文字/g

        检测方法:
        需要检测的内容.match(regexp)
            返回值: 
                在字符串内检索指定的值, 返回找到一个或者多个正则表达式的匹配, 匹配不到则会返回null

            参数:
                regexp         规定匹配模式的RegExp对象(需要匹配的正则)

        方法二: new RegExp() 构造函数(js自带)

        作用: 
            用于规定的文本检索内容

        写法:
            new RegExp(pattern, attr)

            参数:
                pattern
                    是一个字符串, 指定正则表达式的模式
                attr
                    匹配的模式("g"、"i"....匹配模式)

        检测方法:
            test()
                用于检测一个字符串是否匹配某个模式
            返回值:
                布尔值, 匹配成功返回true, 否则就是false
            使用:
                new RegExp().test(需要查找的字符串[必填])


        特别字符
        ^ 匹配输入字符串开始的位置
        $ 匹配输入字符串结束的位置
        + 匹配前面的表达式出现1次或者多次, 例如字符+
        ? 匹配前面的表达式出现0次或者1次, 例如字符?
        * 匹配前面的表达式出现0次或者多次, 例如字符*
        | 指明两项之间的一个选择(和逻辑或 || 类似), 例如字符1 | 字符2
        [] 匹配输入字符串的取值范围, 例如: [0-9]、[a-z]、[A-Z]
        () 标记表达式开始和结束的位置
        {} 限定符号表达式, "{" 开始值, "}"结束值
        例如: 
        {1, 5}  至少出现1次, 最多出现5次
        {0, 2}  至少出现0次, 最多出现2次
        {5}     至少出现5次

        元子字符
        \d 匹配数字, 等价于[0-9]
        \D 匹配非数字, 等价于[^0-9] ^取反, 不包括
        \w 匹配英文、数字、下划线 等价于[0-9a-zA-Z_]
        \W 匹配非英文、数字、下划线 等价于[^0-9a-zA-Z_] ^取反, 不包括


        匹配模式(修饰符)
        g ----- 全局搜索(匹配)
        i ----- 不区分大小写
        m ----- 多行匹配
    -->

    <script>
        let str = "今天天气真不错~";
        // 匹配 "天"
        // 未使用正则
        for (let i = 0; i < str.length; i++) {
            // 条件一
            // if (!str[i].indexOf("天")) {
            //     // console.log(str.charAt(i));
            //     console.log(str.charAt(i));
            // }

            // 条件二
            if (str.charAt(i) == "天") {
                console.log(str.charAt(i));
            }
        }

        // 使用正则
        // 1.字面量创建
        let reg = /天/g; // 全局搜索"天"
        let res = str.match(reg);
        console.log(res);

        // 2.使用RegExp构造函数创建
        // 判断是否存在某个字符
        // 敏感字符, 过滤错误文字...
        let str1 = "今天是什么鬼天气";
        let reg1 = new RegExp("鬼", "g");
        // reg1.test(需要检测的文本)
        let res1 = reg1.test(str1);
        console.log(res1, reg1);
    </script>
</body>

</html>